// // 迭代器
// function createArrayIterator(arr){
//     let index = 0
//     return{
//         next:function(){
//             if(index<arr.length){
//                 return { done:false,value:arr[index++]}
//             }else{
//                 return {done:true,value:undefined}
//             }
//         }
//     }
// }

// const names = ["abc","cba","nba"]
 
// const namesInterator = createArrayIterator(names)

// console.log(namesInterator.next())
// console.log(namesInterator.next())
// console.log(namesInterator.next())
// console.log(namesInterator.next())

// // 生成器

// function* foo(){
//     let index = 0;
//     yield arr[index++]
//     yield arr[index++]
//     yield arr[index++]
// }

//生成器來替代迭代器
// function* createArrayIterator(arr){
//     // 第三種
//     yield* arr
//     // 第二種寫法
//     // for(const item of arr){
//     //     yield item 
//     // }
//     // 第一種
//     // yield "abc"
//     // yield "cba"
//     // yield "nba"

// }

// const nameIterator = createArrayIterator(names)

// console.log(nameIterator.next())

// 2.创建一个函数，这个函数可以迭代一个范围内的数字
function* creatRangeIterator(start,end){
    let index = start
    // return{
    //     next:function(){
    //         if(index<end){
    //             return {done:false,value:index++}
    //         }else{
    //             return {done:true,value:undefined}
    //         }
    //     }
    // }
    while(index <end){
        yield index++
    }
}

const  rangeIterator =creatRangeIterator(10,20)
console.log(rangeIterator.next())
console.log(rangeIterator.next())
console.log(rangeIterator.next())
console.log(rangeIterator.next())
console.log(rangeIterator.next())
console.log(rangeIterator.next())
console.log(rangeIterator.next())
console.log(rangeIterator.next())
console.log(rangeIterator.next())